home *** CD-ROM | disk | FTP | other *** search
- void push(stack *st, void *pvalue)
- {
- if (st->stack_ptr == st->max_stack)
- printf("Stack %s is full\n", st->stack_name);
- else
- switch (st->type) {
-
- case INT:
- ((int *)st->pstack)[st->stack_ptr++] = *(int *)pvalue;
- break;
-
- case LONG:
- ((long *)st->pstack)[st->stack_ptr++] = *(long *)pvalue;
- break;
-
- case DOUBLE:
- ((double *)st->pstack)[st->stack_ptr++] = *(double *)pvalue;
- break;
- }
- }
-
- void *pop(stack *st)
- {
- if (st->stack_ptr == 0) {
- printf("Stack %s is empty\n", st->stack_name);
- return 0;
- }
-
- switch (st->type) {
-
- case INT:
- return &((int *)st->pstack)[--st->stack_ptr];
- break;
-
- case LONG:
- return &((long *)st->pstack)[--st->stack_ptr];
- break;
-
- case DOUBLE:
- return &((long *)st->pstack)[--st->stack_ptr];
- break;
- }
- }
-
-